// 按两次 Shift 打开“随处搜索”对话框并输入 `show whitespaces`，
// 然后按 Enter 键。现在，您可以在代码中看到空格字符。
public class Main {
    public static void fun() {
        try {
            int[] array = {1, 2, 3};
            System.out.println(array[3]);

        }catch(Exception e){
            System.out.println("捕获Exception异常");
        }finally{
            System.out.println("finally代码必须执行");
        }
        System.out.println("try-catch 后的代码执行");
    }
    public static void main(String[] args) {
        fun();
    }

    public static void function(int a) {
        if (a == 0) {
            throw new NullPointerException();
        }
    }
    public static void fun1() {
        try {
            int[] array = {1, 2, 3};
            System.out.println(array[3]);
            System.out.println("try-catch捕获异常");
        }catch(Exception e){
            System.out.println("捕获Exception异常");
        }
    }
    public static void fun2(){
        try {
            int[] array = {1, 2, 3};
            System.out.println(array[3]);
            System.out.println("try-catch捕获异常");
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("捕获ArrayIndexOutOfBoundsException异常");
        } catch (NullPointerException e) {
            System.out.println("捕获到NullPointerException异常");
            e.printStackTrace();//打印异常的堆栈跟踪信息
            System.out.println("处理完异常");
        }
    }

//    public static void fun() {
//        try {
//            int[] array = {1, 2, 3};
//            System.out.println(array[3]);//此处会抛出数组越界异常
//            System.out.println("try-catch捕获异常");
//        } catch (NullPointerException | ArrayIndexOutOfBoundsException e) {//此处捕获的是空指针异常，无法真正捕获到
//            System.out.println("捕获到异常");
//            e.printStackTrace();//打印异常的堆栈跟踪信息
//            System.out.println("处理完异常");
//        }
//    }


}
//        } catch (ArrayIndexOutOfBoundsException e) {
//            System.out.println("捕获到ArrayIndexOutOfBoundsException异常");
//            e.printStackTrace();
//        }
